Fric-frac Domeinmodel
De bouwstenen van een domeinmodel
Het domeinmodel bestaat uit conceptuele klassen of entiteiten. Zoín klasse of entiteit representeert een concept of iets tastbaars (bijvoorbeeld een artikel) uit de werkelijkheid. Denk bijvoorbeeld aan de verkoop van een artikel. Een object is een zelfstandig iets uit de werkelijkheid dat van belang is voor het te ontwerpen systeem. Objecten met gelijksoortige eigenschappen, bijvoorbeeld artikelobjecten, kunnen we beschouwen als exemplaren - ook wel instanties genoemd - van een klasse of entiteit Artikel.
Een klasse of entiteit wordt nader bepaald door zijn attributen die de eigenschappen van een klasse of entiteit vastleggen. Zoals gezegd representeren klassen betekenisvolle dingen of concepten uit de werkelijkheid. Een klasse wordt gekarakteriseerd door zijn naam. In het algemeen bezitten klassen attributen die eigenschappen van zo'n klasse beschrijven. Attributen hebben een naam en een gegevenstype. Hierbij worden zogenaamde primitieve gegevenstypen gebruikt zoals gehele getallen, gebroken getallen, tekst, datums, tijdstippen en booleans.
In en domeinmodel worden de klassen of entiteiten door associaties of verwantschappen met elkaar. Verwantschappen kan je meestal uitdrukken met een werkwoord. Als Event en Person entiteiten zijn dan zijn wat volgt verwantschappen (in het vet):
- een event wordt bijgewoond door geen of meerdere personen;
- een persoon woont in één en slechts één land;
- een land wordt door geen of meerdere personen bewoond;
In cursief worden de veelheden of multiplicities weergegeven en de entiteiten zijn onderstreept.
Bedenk wel dat hèt domeinmodel niet 'echt' bestaat. Een domeinmodel bevat immers altijd interpretaties en beslissingen. Een andere ontwerper kan mogelijk een andere interpretatie geven en andere beslissingen nemen. Interpretatieverschillen kunnen door een goede communicatie met opdrachtgever en gebruikers wellicht verminderd worden.
Werkwijze
Een domeinmodel is de beschrijving van alles uit het domein dat voor het systeem van belang kan zijn. Dit is ruimer dan het toewerken naar een relationele database. In een domeinmodel worden ook klassen opgenomen die overeenkomen met elementen uit de context en waarvan het helemaal niet duidelijk is of die ooit een tegenhanger in het uiteindelijke systeem zullen krijgen. Denk bij domeinmodel dus vooral niet alleen aan een datamodel!
Toch is een datamodel een goed vertrekpunt.